package draw2d.textflow;

import org.dftproject.genesis.ui.figures.ColumnData;
import org.dftproject.genesis.ui.figures.ColumnLayout;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.Panel;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.ToolbarLayout;
import org.eclipse.draw2d.text.FlowPage;
import org.eclipse.draw2d.text.ParagraphTextLayout;
import org.eclipse.draw2d.text.TextFlow;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class TextFlowTest {

	private FigureCanvas canvas;

	public static void main(String[] args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setText("Text Flow Test");

		TextFlowTest textFlowTest = new TextFlowTest();
		textFlowTest.createControls(shell);

		shell.setSize(640, 480);
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	protected void createControls(Shell shell) {
		shell.setLayout(new FillLayout());

		// Create the main Draw2D canvas

		canvas = new FigureCanvas(shell);

		// Create the root figure

		Panel container = new Panel();
		container.setBackgroundColor(ColorConstants.listBackground);
		container.setBorder(new MarginBorder(5));
		canvas.setContents(container);
		canvas.getViewport().setContentsTracksWidth(true);
		
		// Create the root layout
		
		ToolbarLayout layout = new ToolbarLayout(false);
		layout.setSpacing(2);
		container.setLayoutManager(layout);
		
		// Create the flowed text
		
		TextFlow textFlow = new TextFlow();
		textFlow.setLayoutManager(new ParagraphTextLayout(textFlow, ParagraphTextLayout.WORD_WRAP_SOFT));
		textFlow.setText("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce pharetra dignissim erat. Nam sapien. Duis dapibus neque ac arcu. Nullam euismod blandit magna. Donec pretium tellus vitae libero sodales feugiat. Morbi vitae massa. Vivamus in odio a purus nonummy sagittis. Pellentesque vitae leo vitae sem consectetuer cursus. Vestibulum vehicula libero quis purus cursus accumsan. Praesent magna. Sed volutpat ante. In nunc quam, sodales ac, pharetra id, tempus a, enim. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent eleifend odio eget felis. Morbi rutrum.\n\nPraesent porta rhoncus enim. Suspendisse potenti. Ut sodales, leo non mattis gravida, ipsum lorem egestas tortor, sit amet pretium mi arcu at orci. Nam tincidunt. Fusce bibendum urna at erat pharetra auctor. Praesent accumsan pellentesque elit. Sed posuere. Quisque auctor dolor id est rhoncus pharetra. Duis accumsan felis in justo. Cras in massa. Praesent luctus rhoncus urna. Donec sodales adipiscing purus. Mauris ultricies neque vel nisl. Quisque non erat vel diam molestie vestibulum. Curabitur vehicula.\n\nSuspendisse vulputate erat a pede. Donec sed nibh a turpis sodales porttitor. Nunc nonummy, massa id ultrices hendrerit, justo arcu egestas urna, condimentum feugiat odio eros vel nisi. In tempor. Pellentesque augue est, scelerisque eu, tincidunt eget, sodales a, enim. Aenean urna. Aliquam erat volutpat. Curabitur sagittis, elit sed hendrerit fermentum, pede tellus luctus lectus, nec malesuada ipsum diam nec leo. Etiam nec nunc nec lorem faucibus rutrum. Sed sodales ipsum ullamcorper augue. Donec odio orci, egestas eu, mollis ut, tristique id, lorem. Sed velit. Vivamus adipiscing libero sit amet elit. Nulla commodo sapien in sem. Morbi rhoncus massa in ipsum. Integer id mauris. Ut leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam quis lectus.\n\nVestibulum elit. Fusce volutpat, turpis eget dictum porta, massa massa placerat tortor, vitae malesuada eros sapien ut dolor. Fusce ac nisi. Nulla facilisi. In convallis magna ut est. Mauris fermentum lacinia tellus. Fusce mollis nibh quis ipsum. Sed id urna ac odio placerat dignissim. Curabitur sit amet eros vel arcu sollicitudin facilisis. Mauris auctor nunc id odio. Maecenas vel justo. Etiam tempus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras est tellus, pharetra id, vestibulum sit amet, gravida et, pede. Morbi facilisis, nibh ac mattis luctus, quam ante imperdiet ligula, id elementum ligula purus vitae risus. Morbi nunc nisi, rutrum eget, dapibus sit amet, egestas id, lectus. Sed eget purus. Duis congue sapien vel turpis. Pellentesque nibh lectus, pulvinar quis, fringilla ut, volutpat in, leo.\n\nMauris interdum ante eget velit. Suspendisse ante. Donec varius ornare tellus. Nulla condimentum dui eget neque. Quisque ullamcorper, tellus et placerat tincidunt, nisl est malesuada nulla, at malesuada est enim sit amet lorem. Pellentesque augue. Etiam quam lorem, feugiat nec, scelerisque eget, vulputate vel, magna. Morbi sagittis, elit ut ullamcorper tempor, nulla enim convallis felis, rutrum venenatis tellus augue ut neque. Fusce vitae dolor. Curabitur feugiat lacus ac quam. Duis consectetuer, magna vel posuere scelerisque, tortor libero tempus sapien, ut volutpat est dui vitae velit. Morbi eros. Aliquam tempus, nunc nec pellentesque luctus, mi felis sodales nisi, in pharetra ligula dolor vitae urna. Etiam scelerisque viverra lectus.");
		
		FlowPage flowPage = new FlowPage();
		flowPage.add(textFlow);
		
		IFigure intermediate = new RectangleFigure();
		intermediate.setLayoutManager(new ColumnLayout(10));
		intermediate.setBorder(new MarginBorder(5));
		intermediate.setBackgroundColor(ColorConstants.green);
		
		Label label = new Label("I am still awesome!!!!!!");
		label.setForegroundColor(ColorConstants.red);
		intermediate.add(label, new ColumnData());
		
		intermediate.add(flowPage, new ColumnData(100));
		
		container.add(intermediate);
	}

}
